import { IIsUtils } from '@/utils/interface/IIsUtils';

/**
 * @class IsUtils
 * @description UseIs
 * @implements IIsUtils
 */
class IsUtils implements IIsUtils {
  public isNull(val: any): boolean {
    // 检查 null 和 undefined
    if (val === null || val === undefined || val === '') {
      return true;
    }

    // 检查数组和字符串的长度
    if (typeof val === 'string' || Array.isArray(val)) {
      return val.length <= 0;
    }

    // 检查对象的键数量
    if (typeof val === 'object') {
      return Object.keys(val).length <= 0;
    }

    // 其他情况（包括数字）不为空
    return false;
  }

  isAsyncFunc(fun: Function): boolean {
    return Object.prototype.toString.call(fun) === '[object AsyncFunction]';
  }
}

const isUtils = new IsUtils();
export default isUtils;
